clusters = {
            '0x0003': 'Identify',
            '0x0004': 'Groups',
            '0x0005': 'Scenes',
            '0x0006': 'On/Off',
            '0x0008': 'Level Control for Lighting',
            '0x001C': 'Pulse Width Modulation',
            '0x001D': 'descriptor',
            '0x001E': 'binding',
            '0x001F': 'access_control',
            '0x0025': 'Actions',
            "0x0029": 'ota_software_update_provider',
            '0x0028': 'Basic Information',
            '0x002A': 'ota_software_update_requestor',
            '0x002B': 'Localization Configuration',
            '0x002C': 'Time Format Localization',
            '0x002D': 'Unit Localization',
            '0x002E': 'Power Source Configuration',
            '0x002F': 'Power Source',
            '0x0030': 'General Commissioning',
            '0x0031': 'Network Commissioning',
            '0x0032': 'Diagnostic Logs',
            '0x0033': 'General Diagnostics',
            '0x0034': 'Software Diagnostics',
            '0x0035': 'Thread Network Diagnostics',
            '0x0036': 'WiFi Network Diagnostics',
            '0x0037': 'Ethernet Network Diagnostics',
            '0x0038': 'Time Sync',
            '0x0039': 'Bridged Device Basic Information',
            '0x003C': 'Administrator Commissioning',
            '0x003B': 'Switch',
            '0x003E': 'Operational Credentials',
            '0x003F': 'GroupKeyManagement',
            '0x0040': 'Fixed Label',
            '0x0041': 'User Label',
            '0x0045': 'Boolean State',
            '0x0050': 'Mode Select',
            '0x0058': 'Dishwasher Controls',
            '0x0059': 'Dishwasher Mode Select',
            '0x0051': 'Laundry Washer Mode Select',
            '0x0052': 'Refrigerator Mode Select',
            '0x005A': 'Dishwasher Operational State',
            '0x0057': 'Refrigerator Alarm',
            '0x0056': 'Temperature Control',
            '0x0053': 'Washer Controls',
            '0x005C': 'Smoke and CO Alarm',
            '0x0060': 'Operational State',
            '0x0101': 'Door Lock',
            '0x0102': 'Window Covering',
            '0x0200': 'Pump Configuration and Control',
            '0x0201': 'Thermostat',
            '0x0202': 'Fan Control',
            '0x0204': 'Thermostat User Interface Configuration',
            '0x0300': 'Color Control',
            '0x0301': 'Ballast Configuration',
            '0x0400': 'Illuminance Measurement',
            '0x0402': 'Temperature Measurement',
            '0x0403': 'Pressure Measurement',
            '0x0404': 'Flow Measurement',
            '0x0405': 'Relative Humidity Measurement',
            '0x0406': 'Occupancy Sensing',
            '0x0407': 'Leaf Wetness Measurement',
            '0x0408': 'Soil Moisture Measurement',
            '0x0503': 'Wake on LAN',
            '0x0508': 'Low Power',
            '0x0504': 'Channel',
            '0x050E': 'Account Login',
            '0x050D': 'Application Basic',
            '0x050C': 'Application Launcher',
            '0x050B': 'Audio Output',
            '0x050A': 'Content Launcher',
            '0x0509': 'Keypad Input',
            '0x0507': 'Media Input',
            '0x0506': 'Media Playback',
            '0x0505': 'Target Navigator',
            '0x0840': 'control_bridge',
        }
attributes = {
            '0x0003_0x0000': 'IdentifyTime',
            '0x0003_0x0001': 'IdentifyType',
            '0x0003_0xFFF8': 'GeneratedCommandList',
            '0x0003_0xFFF9': 'AcceptedCommandList',
            '0x0003_0xFFFB': 'AttributeList',
            '0x0003_0xFFFC': 'FeatureMap',
            '0x0003_0xFFFD': 'ClusterRevision',
            '0x0006_0x0000': 'OnOff',
            '0x0006_0x4000': 'GlobalSceneControl',
            '0x0006_0x4001': 'OnTime',
            '0x0006_0x4002': 'OffWaitTime',
            '0x0006_0x4003': 'StartUpOnOff',
            '0x0006_0xFFF8': 'GeneratedCommandList',
            '0x0006_0xFFF9': 'AcceptedCommandList',
            '0x0006_0xFFFB': 'AttributeList',
            '0x0006_0xFFFC': 'FeatureMap',
            '0x0006_0xFFFD': 'ClusterRevision',
            '0x0008_0x0000': 'CurrentLevel',
            '0x0008_0x0001': 'RemainingTime',
            '0x0008_0x0002': 'MinLevel',
            '0x0008_0x0003': 'MaxLevel',
            '0x0008_0x0004': 'CurrentFrequency',
            '0x0008_0x0005': 'MinFrequency',
            '0x0008_0x0006': 'MaxFrequency',
            '0x0008_0x000F': 'Options',
            '0x0008_0x0010': 'OnOffTransitionTime',
            '0x0008_0x0011': 'OnLevel',
            '0x0008_0x0012': 'OnTransitionTime',
            '0x0008_0x0013': 'OffTransitionTime',
            '0x0008_0x0014': 'DefaultMoveRate',
            '0x0008_0x4000': 'StartUpCurrentLevel',
            '0x0008_0xFFF8': 'GeneratedCommandList',
            '0x0008_0xFFF9': 'AcceptedCommandList',
            '0x0008_0xFFFB': 'AttributeList',
            '0x0008_0xFFFC': 'FeatureMap',
            '0x0008_0xFFFD': 'ClusterRevision',
            '0x0300_0x0000': 'CurrentHue',
            '0x0300_0x0001': 'CurrentSaturation',
            '0x0300_0x0002': 'RemainingTime',
            '0x0300_0x0003': 'CurrentX',
            '0x0300_0x0004': 'CurrentY',
            '0x0300_0x0005': 'DriftCompensation',
            '0x0300_0x0006': 'CompensationText',
            '0x0300_0x0007': 'ColorTemperatureMireds',
            '0x0300_0x0008': 'ColorMode',
            '0x0300_0x000F': 'Options',
            '0x0300_0x4000': 'EnhancedCurrentHue',
            '0x0300_0x4001': 'EnhancedColorMode',
            '0x0300_0x4002': 'ColorLoopActive',
            '0x0300_0x4003': 'ColorLoopDirection',
            '0x0300_0x4004': 'ColorLoopTime',
            '0x0300_0x4005': 'ColorLoopStartEnhancedHue',
            '0x0300_0x4006': 'ColorLoopStoredEnhanceHue',
            '0x0300_0x400A': 'ColorCapabilities',
            '0x0300_0x400B': 'olorTempPhysicalMinMireds',
            '0x0300_0x400C': 'ColorTempPhysicalMaxMireds',
            '0x0300_0x400D': 'CoupleColorTempToLevelMinMireds',
            '0x0300_0x4010': 'StartUpColorTemperatureMireds',
            '0x0300_0x0010': 'NumberOfPrimaries',
            '0x0300_0x0011': 'Primary1X',
            '0x0300_0x0012': 'Primary1Y',
            '0x0300_0x0013': 'Primary1Intensity',
            '0x0300_0x0014': 'Primary2X',
            '0x0300_0x0015': 'Primary2Y',
            '0x0300_0x0016': 'Primary2Intensity',
            '0x0300_0x0017': 'Primary2Intensity',
            '0x0300_0x0019': 'Primary3X',
            '0x0300_0x001A': 'Primary3Y',
            '0x0300_0x001B': 'Primary3Intensity',
            '0x0300_0x0020': 'Primary4X',
            '0x0300_0x0021': 'Primary4Y',
            '0x0300_0x0022': 'Primary4Intensity',
            '0x0300_0x0024': 'Primary5X',
            '0x0300_0x0025': 'Primary5Y',
            '0x0300_0x0026': 'Primary5Intensity',
            '0x0300_0x0028': 'Primary6X',
            '0x0300_0x0029': 'Primary6Y',
            '0x0300_0x002A': 'Primary6Intensity',
            '0x0300_0x0030': 'WhitePointX',
            '0x0300_0x0031': 'WhitePointY',
            '0x0300_0x0032': 'ColorPointRX',
            '0x0300_0x0033': 'ColorPointRY',
            '0x0300_0x0034': 'ColorPointRIntensity',
            '0x0300_0x0036': 'ColorPointGX',
            '0x0300_0x0037': 'ColorPointGY',
            '0x0300_0x0038': 'ColorPointGIntensity',
            '0x0300_0x003A': 'ColorPointBX',
            '0x0300_0x003B': 'ColorPointBY',
            '0x0300_0x003C': 'ColorPointBIntensity',
            '0x0300_0xFFF8': 'GeneratedCommandList',
            '0x0300_0xFFF9': 'AcceptedCommandList',
            '0x0300_0xFFFB': 'AttributeList',
            '0x0300_0xFFFC': 'FeatureMap',
            '0x0300_0xFFFD': 'ClusterRevision',
            '0x001D_0x0000': 'DeviceTypeList',
            '0x001D_0x0001': 'ServerList',
            '0x001D_0x0002': 'ClientList',
            '0x001D_0x0003': 'PartsList',
            '0x001D_0x0004': 'TagList',
            '0x001D_0xFFF8': 'GeneratedCommandList',
            '0x001D_0xFFF9': 'AcceptedCommandList',
            '0x001D_0xFFFA': 'EventList',
            '0x001D_0xFFFB': 'AttributeList',
            '0x001D_0xFFFC': 'FeatureMap',
            '0x001D_0xFFFD': 'ClusterRevision',
            '0x001F_0x0000': 'Acl',
            '0x001F_0x0001': 'Extension',
            '0x001F_0x0002': 'SubjectsPerAccessControlEntry',
            '0x001F_0x0003': 'TargetsPerAccessControlEntry',
            '0x001F_0x0004': 'AccessControlEntriesPerFabric',
            '0x001F_0xFFF8': 'GeneratedCommandList',
            '0x001F_0xFFF9': 'AcceptedCommandList',
            '0x001F_0xFFFB': 'AttributeList',
            '0x001F_0xFFFC': 'FeatureMap',
            '0x001F_0xFFFD': 'ClusterRevision',
            '0x0028_0x0000': 'DataModelRevision',
            '0x0028_0x0001': 'VendorName',
            '0x0028_0x0002': 'VendorID',
            '0x0028_0x0003': 'ProductName',
            '0x0028_0x0004': 'ProductID',
            '0x0028_0x0005': 'NodeLabel',
            '0x0028_0x0006': 'Location',
            '0x0028_0x0007': 'HardwareVersion',
            '0x0028_0x0008': 'HardwareVersionString',
            '0x0028_0x0009': 'SoftwareVersion',
            '0x0028_0x000A': 'SoftwareVersionString',
            '0x0028_0x000B': 'ManufacturingDate',
            '0x0028_0x000C': 'PartNumber',
            '0x0028_0x000D': 'ProductURL',
            '0x0028_0x000E': 'ProductLabel',
            '0x0028_0x000F': 'SerialNumber',
            '0x0028_0x0010': 'LocalConfigDisabled',
            '0x0028_0x0011': 'Reachable',
            '0x0028_0x0012': 'UniqueID',
            '0x0028_0x0013': 'CapabilityMinima',
            '0x0028_0x0014': 'ProductAppearance',
            '0x0028_0xFFF8': 'GeneratedCommandList',
            '0x0028_0xFFF9': 'AcceptedCommandList',
            '0x0028_0xFFFB': 'AttributeList',
            '0x0028_0xFFFC': 'FeatureMap',
            '0x0028_0xFFFD': 'ClusterRevision',
            '0x002A_0x0000': 'DefaultOTAProviders',
            '0x002A_0x0001': 'UpdatePossible',
            '0x002A_0x0002': 'UpdateState',
            '0x002A_0x0003': 'UpdateStateProgress',
            '0x002A_0xFFF8': 'GeneratedCommandList',
            '0x002A_0xFFF9': 'AcceptedCommandList',
            '0x002A_0xFFFB': 'AttributeList',
            '0x002A_0xFFFC': 'FeatureMap',
            '0x002A_0xFFFD': 'ClusterRevision',
            '0x002C_0x0000': 'HourFormat',
            '0x002C_0x0001': 'ActiveCalendarType',
            '0x002C_0x0002': 'SupportedCalendarTypes',
            '0x0030_0x0000': 'Breadcrumb',
            '0x0030_0x0001': 'BasicCommissioningInfo',
            '0x0030_0x0002': 'RegulatoryConfig',
            '0x0030_0x0003': 'LocationCapability',
            '0x0030_0x0004': 'SupportsConcurrentConnection',
            '0x0030_0x0020': 'Primary4X',
            '0x0030_0x0021': 'Primary4Y',
            '0x0030_0x0022': 'Primary4Intensity',
            '0x0030_0x0024': 'Primary5X',
            '0x0030_0x0025': 'Primary5Y',
            '0x0030_0x0026': 'Primary5Intensity',
            '0x0030_0x0028': 'Primary6X',
            '0x0030_0x0029': 'Primary6Y',
            '0x0030_0x002A': 'Primary6Intensity',
            '0x0030_0x4000': 'EnhancedCurrentHue',
            '0x0030_0x4001': 'EnhancedColorMode',
            '0x0030_0x4002': 'ColorLoopActive',
            '0x0030_0x4003': 'ColorLoopDirection',
            '0x0030_0x4004': 'ColorLoopTime',
            '0x0030_0x4005': 'ColorLoopStartEnhancedHue',
            '0x0030_0x4006': 'ColorLoopStoredEnhancedHue',
            '0x0030_0x400A': 'ColorCapabilities',
            '0x0030_0x400B': 'ColorTempPhysicalMinMireds',
            '0x0030_0x400C': 'ColorTempPhysicalMaxMireds',
            '0x0030_0x400D': 'CoupleColorTempToLevelMinMireds',
            '0x0030_0x4010': 'StartUpColorTemperatureMireds',
            '0x0030_0xFFF8': 'GeneratedCommandList',
            '0x0030_0xFFF9': 'AcceptedCommandList',
            '0x0030_0xFFFB': 'AttributeList',
            '0x0030_0xFFFC': 'FeatureMap',
            '0x0030_0xFFFD': 'ClusterRevision',
            '0x0031_0x0000': 'MaxNetworks',
            '0x0031_0x0001': 'Networks',
            '0x0031_0x0002': 'ScanMaxTimeSeconds',
            '0x0031_0x0003': 'ConnectMaxTimeSeconds',
            '0x0031_0x0004': 'InterfaceEnabled',
            '0x0031_0x0005': 'LastNetworkingStatus',
            '0x0031_0x0006': 'LastNetworkID',
            '0x0031_0x0007': 'LastConnectErrorValue',
            '0x0031_0xFFF8': 'GeneratedCommandList',
            '0x0031_0xFFF9': 'AcceptedCommandList',
            '0x0031_0xFFFB': 'AttributeList',
            '0x0031_0xFFFC': 'FeatureMap',
            '0x0031_0xFFFD': 'ClusterRevision',
            '0x0033_0x0000': 'NetworkInterfaces',
            '0x0033_0x0001': 'RebootCount',
            '0x0033_0x0002': 'UpTime',
            '0x0033_0x0003': 'TotalOperationalHours',
            '0x0033_0x0004': 'BootReasons',
            '0x0033_0x0005': 'ActiveHardwareFaults',
            '0x0033_0x0006': 'ActiveRadioFaults',
            '0x0033_0x0007': 'ActiveNetworkFaults',
            '0x0033_0x0008': 'TestEventTriggersEnabled',
            '0x0033_0xFFF8': 'GeneratedCommandList',
            '0x0033_0xFFF9': 'AcceptedCommandList',
            '0x0033_0xFFFB': 'AttributeList',
            '0x0033_0xFFFC': 'FeatureMap',
            '0x0033_0xFFFD': 'ClusterRevision',
            '0x0034_0x0000': 'ThreadMetrics',
            '0x0034_0x0001': 'CurrentHeapFree',
            '0x0034_0x0002': 'CurrentHeapUsed',
            '0x0034_0x0003': 'CurrentHeapHighWatermark',
            '0x0034_0xFFF8': 'GeneratedCommandList',
            '0x0034_0xFFF9': 'AcceptedCommandList',
            '0x0034_0xFFFB': 'AttributeList',
            '0x0034_0xFFFC': 'FeatureMap',
            '0x0034_0xFFFD': 'ClusterRevision',
            '0x0036_0x0000': 'BSSID',
            '0x0036_0x0001': 'SecurityType',
            '0x0036_0x0002': 'WiFiVersion',
            '0x0036_0x0003': 'ChannelNumber',
            '0x0036_0x0004': 'RSSI',
            '0x0036_0x0005': 'BeaconLostCount',
            '0x0036_0x0006': 'BeaconRxCount',
            '0x0036_0x0007': 'PacketMulticastRxCount',
            '0x0036_0x0008': 'PacketMulticastTxCount',
            '0x0036_0x0009': 'PacketUnicastRxCount',
            '0x0036_0x000A': 'PacketUnicastTxCount',
            '0x0036_0x000B': 'CurrentMaxRate',
            '0x0036_0x000C': 'OverrunCount',
            '0x0036_0xFFF8': 'GeneratedCommandList',
            '0x0036_0xFFF9': 'AcceptedCommandList',
            '0x0036_0xFFFB': 'AttributeList',
            '0x0036_0xFFFC': 'FeatureMap',
            '0x0036_0xFFFD': 'ClusterRevision',
            '0x003C_0x0000': 'WindowStatus',
            '0x003C_0x0001': 'AdminFabricIndex',
            '0x003C_0x0002': 'AdminVendorId',
            '0x003C_0xFFF8': 'GeneratedCommandList',
            '0x003C_0xFFF9': 'AcceptedCommandList',
            '0x003C_0xFFFB': 'AttributeList',
            '0x003C_0xFFFC': 'FeatureMap',
            '0x003C_0xFFFD': 'ClusterRevision',
            '0x003E_0x0000': 'NOCs',
            '0x003E_0x0001': 'Fabrics',
            '0x003E_0x0002': 'SupportedFabrics',
            '0x003E_0x0003': 'CommissionedFabrics',
            '0x003E_0x0004': 'TrustedRootCertificates',
            '0x003E_0x0005': 'CurrentFabricIndex',
            '0x003E_0xFFF8': 'GeneratedCommandList',
            '0x003E_0xFFF9': 'AcceptedCommandList',
            '0x003E_0xFFFB': 'AttributeList',
            '0x003E_0xFFFC': 'FeatureMap',
            '0x003E_0xFFFD': 'ClusterRevision',
            '0x003F_0x0000': 'GroupKeyMap',
            '0x003F_0x0001': 'GroupTable',
            '0x003F_0x0002': 'MaxGroupsPerFabric',
            '0x003F_0x0003': 'MaxGroupKeysPerFabric',
            '0x003F_0xFFF8': 'GeneratedCommandList',
            '0x003F_0xFFF9': 'AcceptedCommandList',
            '0x003F_0xFFFB': 'AttributeList',
            '0x003F_0xFFFC': 'FeatureMap',
            '0x003F_0xFFFD': 'ClusterRevision'
        }
cmds = {
            '0x0003_0x0000': 'Identify',
            '0x0003_0x0001': 'IdentifyQuery',
            '0x0003_0x0040': 'TriggerEffect',
            '0x0004_0x00': 'AddGroup',
            '0x0004_0x01': 'ViewGroup',
            '0x0004_0x02': 'GetGroupMembership',
            '0x0004_0x03': 'RemoveGroup',
            '0x0004_0x04': 'RemoveAllGroups',
            '0x0004_0x05': 'AddGroupIfIdentifying',
            '0x0004_0x0000': 'AddGroupResponse',
            '0x0004_0x0001': 'ViewGroupResponse',
            '0x0004_0x0002': 'GetGroupMembershipResponse',
            '0x0004_0x0003': 'RemoveGroupResponse',
            '0x0004_0x0004': 'RemoveAllGroups',
            '0x0004_0x0005': 'AddGroupIfIdentifying',
            '0x0005_0x00': 'AddScene',
            '0x0005_0x01': 'ViewScene',
            '0x0005_0x02': 'RemoveScene',
            '0x0005_0x03': 'RemoveAllScenes',
            '0x0005_0x04': 'StoreScene',
            '0x0005_0x05': 'RecallScene',
            '0x0005_0x06': 'GetSceneMembership',
            '0x0005_0x40': 'EnhancedAddScene',
            '0x0005_0x41': 'EnhancedViewScene',
            '0x0005_0x42': 'CopyScene',
            '0x0005_0x0000': 'AddSceneResponse',
            '0x0005_0x0001': 'ViewSceneResponse',
            '0x0005_0x0002': 'RemoveSceneResponse',
            '0x0005_0x0003': 'RemoveAllScenesResponse',
            '0x0005_0x0004': 'StoreSceneResponse',
            '0x0005_0x0006': 'GetSceneMembershipResponse',
            '0x0005_0x0040': 'EnhancedAddSceneResponse',
            '0x0005_0x0041': 'EnhancedViewSceneResponse',
            '0x0005_0x0042': 'CopySceneResponse',
            '0x0006_0x0000': 'Off',
            '0x0006_0x0001': 'On',
            '0x0006_0x0002': 'Toggle',
            '0x0006_0x0040': 'OffWithEffect',
            '0x0006_0x0041': 'OnWithRecallGlobalScene',
            '0x0006_0x0042': 'OnWithTimedOff',
            '0x0008_0x0000': 'MoveToLevel',
            '0x0008_0x0001': 'Move',
            '0x0008_0x0002': 'Step',
            '0x0008_0x0003': 'Stop',
            '0x0008_0x0004': 'MoveToLevelWithOnOff',
            '0x0008_0x0005': 'MoveWithOnOff',
            '0x0008_0x0006': 'StepWithOnOff',
            '0x0008_0x0007': 'StopWithOnOff',
            '0x0008_0x0008': 'MoveToClosestFrequency',
            '0x0300_0x0000': 'MoveToHue',
            '0x0300_0x0001': 'MoveHue',
            '0x0300_0x0002': 'StepHue',
            '0x0300_0x0003': 'MoveToSaturation',
            '0x0300_0x0004': 'MoveSaturation',
            '0x0300_0x0005': 'StepSaturation',
            '0x0300_0x0006': 'MoveToHueAndSaturation',
            '0x0300_0x0007': 'MoveToColor',
            '0x0300_0x0008': 'MoveColor',
            '0x0300_0x0009': 'StepColor',
            '0x0300_0x000A': 'MoveToColorTemperature',
            '0x0300_0x0040': 'EnhancedMoveToHue',
            '0x0300_0x0041': 'EnhancedMoveHue',
            '0x0300_0x0042': 'EnhancedStepHue',
            '0x0300_0x0043': 'EnhancedMoveToHueAndSaturation',
            '0x0300_0x0044': 'ColorLoopSet',
            '0x0300_0x0047': 'StopMoveStep',
            '0x0300_0x004B': 'MoveColorTemperature',
            '0x0300_0x004C': 'StepColorTemperature',
            '0x0030_0x0000': 'ArmFailSafe',
            '0x0030_0x0001': 'ArmFailSafeResponse',
            '0x0030_0x0002': 'SetRegulatoryConfig',
            '0x0030_0x0003': 'SetRegulatoryConfigResponse',
            '0x0030_0x0004': 'CommissioningComplete',
            '0x0030_0x0005': 'CommissioningCompleteResponse',
            '0x0031_0x0000': 'ScanNetworks',
            '0x0031_0x0001': 'ScanNetworksResponse',
            '0x0031_0x0002': 'AddOrUpdateWiFiNetwork',
            '0x0031_0x0003': 'AddOrUpdateThreadNetwork',
            '0x0031_0x0004': 'RemoveNetwork',
            '0x0031_0x0005': 'NetworkConfigResponse',
            '0x0031_0x0006': 'ConnectNetwork',
            '0x0031_0x0007': 'ConnectNetworkResponse',
            '0x0031_0x0008': 'ReorderNetwork',
            '0x0036_0x0000': 'ResetCounts',
            '0x0033_0x0000': 'TestEventTrigger',
            '0x003C_0x0000': 'OpenCommissioningWindow',
            '0x003C_0x0001': 'OpenBasicCommissioningWindow',
            '0x003C_0x0002': 'RevokeCommissioning',
            '0x003E_0x0000': 'AttestationRequest',
            '0x003E_0x0001': 'AttestationResponse',
            '0x003E_0x0002': 'CertificateChainRequest',
            '0x003E_0x0003': 'CertificateChainResponse',
            '0x003E_0x0004': 'CSRRequest',
            '0x003E_0x0005': 'CSRResponse',
            '0x003E_0x0006': 'AddNOC',
            '0x003E_0x0007': 'UpdateNOC',
            '0x003E_0x0008': 'NOCResponse',
            '0x003E_0x0009': 'UpdateFabricLabel',
            '0x003E_0x000A': 'RemoveFabric',
            '0x003E_0x000B': 'AddTrustedRootCertificate',
            '0x003F_0x0000': 'KeySetWrite',
            '0x003F_0x0001': 'KeySetRead',
            '0x003F_0x0002': 'KeySetReadRespone',
            '0x003F_0x0003': 'KeySetRemove',
            '0x003F_0x0004': 'KeySetReadAllindices',
            '0x003F_0x0005': 'KeySetReadAllIndicesResponse',
            '0x0029_0x0000': 'QueryImage',
            '0x0029_0x0001': 'QueryImageResponse',
            '0x0029_0x0002': 'ApplyUpdateRequest',
            '0x0029_0x0003': 'ApplyUpdateResponse',
            '0x0029_0x0004': 'NotifyUpdateApplied',
            '0x002A_0x0000': 'AnnounceOTAProvider',
        }
cmd_res_status = {
            '0x0': '0x00 (SUCCESS)',
            '0x1': 'FAILURE',
            '0x7d': 'INVALID_SUBSCRIPTION',
            '0x7e': 'UNSUPPORTED_ACCESS, NOT_AUTHORIZED',
            '0x7f': 'UNSUPPORTED_ENDPOINT',
            '0x80': 'INVALID_ACTION',
            '0x81': 'UNSUPPORTED_COMMAND',
            '0xca': 'FAILSAFE_REQUIRED',
            '0x85': 'INVALID_COMMAND',
            '0x86': 'UNSUPPORTED_ATTRIBUTE',
            '0x87': 'CONSTRAINT_ERROR',
            '0x88': 'UNSUPPORTED_WRITE, READY_ONLY',
            '0x89': 'RESOURCE_EXHAUSTED',
            '0x8b': 'NOT_FOUND',
            '0x8c': 'UNREPORTABLE_ATTRIBUTE',
            '0x8d': 'INVALID_DATA_TYPE',
            '0x8f': 'UNSUPPORTED_READ',
            '0x92': 'DATA_VERSION_MISMATCH',
            '0x94': 'TIMEOUT',
            '0x9b': 'UNSUPPORTED_NODE',
            '0x9c': 'BUSY',
            '0xc3': 'UNSUPPORTED_CLUSTER',
            '0xc5': 'NO_UPSTREAM_SUBSCRIPTION',
            '0xc6': 'NEEDS_TIMED_INTERACTION',
            '0xc7': 'UNSUPPORTED_EVENT',
            '0xc8': 'PATHS_EXHAUSTED',
            '0xc9': 'TIMED_REQUEST_MISMATCH',
            '0xcb': 'INVALID_IN_STATE',
            '0xcc': 'INVALID_IN_MODE',
        }
app_dev_types = {
            '0x0016': 'Root Node',
            '0x0011': 'Power Source',
            '0x0012': 'OTA Requestor',
            '0x0014': 'OTA Provider',
            '0x000E': 'Aggregator',
            '0x0013': 'Bridged Node',
            '0x0101': 'Dimmable Light',
            '0x010C': 'Color Temperature Light',
            '0x010D': 'Extended Color Light',
            '0x010A': 'On/Off Plug-in Unit',
            '0x010B': 'Dimmable Plug-in Unit',
            '0x0103': 'On/Off Light Switch',
            '0x0104': 'Dimmer Switch',
            '0x0105': 'Color Dimmer Switch',
            '0x0840': 'Control Bridge',
            '0x0304': 'Pump Controller',
            '0x000F': 'Generic Switch'
        }
CommissioningErrorEnum = {
            '0': 'OK_No eero',
            '1': 'ValueOutsideRange_Attempting to set regulatory configuration to a region or indoor/outdoor '
                 'mode for which the server does not have proper configuration',
            '2': 'InvalidAuthentication_Executed CommissioningComplete outside CASE session',
            '3': 'NoFailSafe_Executed CommissioningComplet e when there was no active Fail-Safe context',
            '4': 'BusyWithOtherAdmin_Attempting to arm failsafe or execute CommissioningComplete from a fabric '
                 'different than the one associated with the current fail-safe context.'
        }  # 0x0030
BasicCommissioningInfo = {
            '0': 'FailSafeExpiryLengthSeconds',
            '1': 'MaxCumulativeFailsafeSeconds'
        }  # 0x0030
RegulatoryLocationTypeEnum = {
            '0': 'Indoor',
            '1': 'Outdoor',
            '2': 'IndoorOutdoor'
        }  # 0x0030
network_commissioning_status_enum = {
            '0': 'Success --> OK, no error',
            '1': 'OutOfRange --> Value Outside Range',
            '2': 'BoundsExceeded --> A collection would exceed its size limit',
            '3': 'NetworkIDNotFound --> The NetworkID is not among the collection of added networks',
            '4': 'DuplicateNetworkID --> The NetworkID is already among the collection of added networks',
            '5': 'NetworkNotFound --> Cannot find AP: SSID Not found',
            '6': 'RegulatoryError --> Cannot find AP: Mismatch on band/channels/regulatory domain/2.4GHz vs 5GHz',
            '7': 'AuthFailure --> Cannot associate due to authentication failure',
            '8': 'UnsupportedSecurity --> Cannot associate due to unsupported security mode',
            '9': 'OtherConnectionFailure --> Other association failure',
            '10': 'IPV6Failed --> Failure to generate an IPV6 address',
            '11': 'IPBindFailed --> Failure to bind Wi-Fi <-> IP Interfaces',
            '12': 'UnknownError'
        }  # 0x0031 Network Commissioning
NetworkCommissioningFeatures = {
            '1': 'WI:WiFiNetworkInterface',
            '2': 'TH: ThreadNetworkInterface',
            '4': 'ET:EthernetNetworkInterface'
        }  # 0x0031 Network Commissioning
CertificateChainTypeEnum = {
            '1': 'DACCertificate: Request the DERencoded DAC certificate',
            '2': 'PAICertificate: Request the DERencoded PAI certificate'
        }  # 0x003E Operational Credentials, CertificateChainRequest
AttestationVerificationResultEnum = {
            '0': 'Success',
            '100': 'PaaUntrusted',
            '101': 'PaaNotFound',
            '102': 'PaaExpired',
            '103': 'PaaSignatureInvalid',
            '104': 'PaaRevoked',
            '105': 'PaaFormatInvalid',
            '106': 'PaaArgumentInvalid',
            '200': 'PaiExpired',
            '201': 'PaiSignatureInvalid',
            '202': 'PaiRevoked',
            '203': 'PaiFormatInvalid',
            '204': 'PaiArgumentInvalid',
            '205': 'PaiVendorIdMismatch',
            '206': 'PaiAuthorityNotFound',
            '207': 'PaiMissing',
            '300': 'DacExpired',
            '301': 'DacSignatureInvalid',
            '302': 'DacRevoked',
            '303': 'DacFormatInvalid',
            '304': 'DacArgumentInvalid',
            '305': 'DacVendorIdMismatch',
            '306': 'DacProductIdMismatch',
            '307': 'DacAuthorityNotFound',
            '400': 'FirmwareInformationMismatch',
            '401': 'FirmwareInformationMissing',
            '500': 'AttestationSignatureInvalid',
            '501': 'AttestationElementsMalformed',
            '502': 'AttestationNonceMismatch',
            '503': 'AttestationSignatureInvalidFormat',
            '600': 'CertificationDeclarationNoKeyId',
            '601': 'CertificationDeclarationNoCertificateFound',
            '602': 'CertificationDeclarationInvalidSignature',
            '603': 'CertificationDeclarationInvalidFormat',
            '604': 'CertificationDeclarationInvalidVendorId',
            '605': 'CertificationDeclarationInvalidProductId',
            '606': 'CertificationDeclarationInvalidPAA',
            '700': 'NoMemory',
            '800': 'InvalidArgument',
            '900': 'InternalError',
            '0xFFFFU': 'NotImplemented'
        }
NodeOperationalCertStatusEnum = {
            '0': 'OK <- OK, no error',
            '1': 'InvalidPublicKey  [Public Key in the NOC does not match the public key in the NOCSR]',
            '2': 'InvalidNodeOpId   [The Node Operational ID in the NOC is not formatted correctly]',
            '3': 'InvalidNOC  [Any other validation error in NOC chain]',
            '4': 'MissingCsr  [No record of prior CSR for which this NOC could match]',
            '5': 'TableFull   [NOCs table full, cannot add another one]',
            '6': 'InvalidAdminSubject  [Invalid CaseAdminSubject field for an AddNOC command]',
            '7': 'Reserved for future use',
            '8': 'Reserved for future use',
            '9': 'FabricConflict  [Trying to AddNOC instead of UpdateNOC against an existing Fabric]',
            '10': 'LabelConflict  [Label already exists on another Fabric]',
            '11': 'InvalidFabricIndex  [FabricIndex argument is invalid]'
        }  # 0x003E Operational Credentials, NOCResponse
CommissioningWindowStatusEnum = {
            '0': 'WindowNotOpen',
            '1': 'EnhancedWindowOpen',
            '2': 'BasicWindowOpen'
        }  # 0x003C Administrator Commissioning
AdministratorCommissioningStatusCode = {
            '0x02': 'Busy [Could not be completed because another commissioning is in progress]',
            '0x03': 'PAKEParameterError [Provided PAKE parameters were incorrectly formatted or otherwise invalid]',
            '0x04': 'WindowNotOpen  [No commissioning window was currently open]'
        }  # 0x003C Administrator Commissioning
CalendarTypeEnum = {
            '0': 'Buddhist [佛教的]',
            '1': 'Chinese 天朝的',
            '2': 'Coptic [科普特教的]',
            '3': 'Ethiopian [埃塞俄比亚的]',
            '4': 'Gregorian [格里高利]',
            '5': 'Hebrew [希伯来人的]',
            '6': 'Indian 印第安的',
            '7': 'Islamic 伊斯兰教的',
            '8': 'Japanese 倭奴鬼子的',
            '9': 'Korean 朝鲜的',
            '10': 'Persian 波斯的',
            '11': 'Taiwanese',
        }
HourFormatEnum = {
    '0': '12hr, Time conveyed with a 12-hour clock',
    '1': '24hr, Time conveyed with a 24-hour clock'
}
UpdateStateEnum = {
            '0': 'Unknown_Current state is not yet determined',
            '1': 'Idle_Not yet in the process of software update',
            '2': 'Querying_In the process of querying an OTA Provider',
            '3': 'DelayedOnQuery_Waiting after a Busy Response',
            '4': 'Downloading_Downloading a software update',
            '5': 'Applying_Verifying and applying a software update',
            '6': 'DelayedOnApply_Waiting caused by AwaitNextAction response',
            '7': 'RollingBack_Recovering to a previous version',
            '8': 'DelayedOnUserConsent',
    }
security_types = {
            '0': 'Unspecified', '1': 'None', '2': 'WEP', '3': 'WPA', '4': 'WPA2',
            '5': 'WPA3'
    }